/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.carrito.jsf.bean;

import com.carrito.jsf.bo.CiudadImplBO;
import java.util.List;
import javax.annotation.PostConstruct;
import org.primefaces.context.RequestContext;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author oscarc
 */
public class BeanCiudad {

    
    private Integer codigo;
    private String nombre;
    //crea un atributo del tipo lista
    private List<BeanCiudad> listaCiudades;
    
    //lista que servirar para filtrar
    private List<BeanCiudad> listaCiudadesFiltro;
    
    //instancia la clase de implementacion donde extiende la interface BO
    private CiudadImplBO ciudadBO;

    public String insertar() {
        getCiudadBO().insertar(this);
        return "";
    }

    //@Transactional
    public String delete(int codigo) { 
        System.out.println("CODIGO ------------>>>>>>> " + codigo);
        int mensaje = 0;
        
        try {
            getCiudadBO().eliminar(codigo);
        } catch (Exception e) {
            System.out.println("errooooooooooooooooooooooooooooooooooooorrrrrrrrrrr " );
            mensaje = 1;
        }
        emitirMensaje(mensaje);
        return "";
    }

    @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
    public String actualizar() {
        getCiudadBO().actualizar(this);
        return "";
    }

    @PostConstruct
    public void consultar() {
        setListaCiudades(getCiudadBO().consultar());
//        return "";
    }

    public String agregarCiudad() {
        return "ciudad";
    }

    public String volverConsulta() {
        return "/ciudades/ciudadConsulta";
    }

    /**
     * @return the codigo
     */
    public Integer getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the listaCiudades
     */
    public List<BeanCiudad> getListaCiudades() {
        return listaCiudades;
    }

    /**
     * @param listaCiudades the listaCiudades to set
     */
    public void setListaCiudades(List<BeanCiudad> listaCiudades) {
        this.listaCiudades = listaCiudades;
    }

    /**
     * @return the ciudadBO
     */
    public CiudadImplBO getCiudadBO() {
        return ciudadBO;
    }

    /**
     * @param ciudadBO the ciudadBO to set
     */
    public void setCiudadBO(CiudadImplBO ciudadBO) {
        this.ciudadBO = ciudadBO;
    }

    /**
     * @return the listaCiudadesFiltro
     */
    public List<BeanCiudad> getListaCiudadesFiltro() {
        return listaCiudadesFiltro;
    }

    /**
     * @param listaCiudadesFiltro the listaCiudadesFiltro to set
     */
    public void setListaCiudadesFiltro(List<BeanCiudad> listaCiudadesFiltro) {
        this.listaCiudadesFiltro = listaCiudadesFiltro;
    }
    
    private void emitirMensaje(int parametro) {

        String resultado = "suceso";
        if (parametro == 1) {
            resultado = "fallo";
        }

        RequestContext.getCurrentInstance().addCallbackParam(resultado, true);
    }
}
